home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
- * "siev.h"
- *-------------------------------------------------------------------------
- * Event library
- * Copyright (c) 1993, TaroPYON
- *************************************************************************/
-
- #ifndef _SIEVT_H
- #define _SIEVT_H
-
- #ifndef _SITYPES_H
- # include <sitypes.h>
- #endif
- #ifndef _SIDEFS_H
- # include <sidefs.h>
- #endif
- #ifndef _SIIDL_H
- # include <siidl.h>
- #endif
- #ifndef _EV_EVTYPNO_H
- # include <EV/evtypno.h>
- #endif
-
- #define EVSW_LEFT (1)
- #define EVSW_RIGHT (2)
-
- typedef struct /* マウスイベントタイプ */
- {
- POINT_T point;
- int sw; /* スイッチ状態 */
- } EVQUEMOS_T;
-
- typedef struct
- {
- USHORT ec;
- USHORT ch;
- } EVQUEKEY_T;
-
- typedef struct _evQueBuf_t /* イベントキューバッファ構造体 */
- {
- struct _evQueBuf_t *next;
- int typ; /* イベント種別 */
- unsigned int clk; /* イベント発生時間 */
- union
- {
- EVQUEMOS_T mos;
- EVQUEKEY_T key;
- } ev;
- } EVQUE_T;
-
- #define EVQUEBUFSIZ (1024)
-
- #define EVQUE_MOS_SWON (0x0000_0001)
- #define EVQUE_MOS_SWOFF (0x0000_0002)
- #define EVQUE_MOS_MOVE (0x0000_0010) /* マウス移動 */
- #define EVQUE_KEY_ON (0x0001_0000) /* キーボード */
-
- typedef struct /* マウスイベントタイプ */
- {
- FRAME_T fr; /* 範囲 */
- int sw; /* スイッチ状態 */
- } EVMOS_T;
-
- typedef struct
- {
- USHORT ec;
- USHORT ch;
- } EVKEY_T;
-
- typedef struct _evdat_t
- {
- unsigned int att; /* 属性 */
- unsigned int stt; /* ステータス */
-
- int typ; /* タイプ */
- void *para; /* パラメータ */
-
- int (*entFunc)( struct _evdat_t *, EVQUE_T *);
- int (*dspFunc)( struct _evdat_t *, int );
- int (*chkFunc)( struct _evdat_t * );
- int (*evFunc)(int,struct _evdat_t *);
- int evNo; /* イベントNo */
- void *ptr; /* ユーザー用ポインタ */
- void *win; /* ウィンドゥ用ポインタ */
- } EVDAT_T;
-
- #define EVDAT_STT_CHK (0x0000_0001)
-
- #define EVCHK_ERR (-1) /* エラー */
- #define EVCHK_NO ( 0) /* なし */
- #define EVCHK_SCLC ( 1) /* シングルクリック */
- #define EVCHK_DCLC ( 2) /* ダブルクリック */
- #define EVCHK_DRAG ( 3) /* ドラッグ */
- #define EVCHK_MOS ( 4) /* その他マウス */
- #define EVCHK_KEY ( 8) /* キー */
-
- #define EVCALL_CHKFUNC(_evdat) \
- ( (_evdat)->chkFunc ? ((_evdat)->chkFunc)(_evdat) : EVCHK_ERR )
-
- typedef struct _ev_t
- {
- struct _ev_t *next, *prev;
- unsigned int att;
- int num;
- EVDAT_T *evdat;
- IDLCTRL_T *idlCt;
- } EV_T;
-
- #define EVMOS_SWON (0x0000_0001) /* スイッチオン */
- #define EVMOS_SWOFF (0x0000_0002) /* スイッチオフ */
- #define EVMOS_MOVE (0x0000_0010) /* マウス移動 */
- #define EVMOS_DARG (0x0000_0020) /* ドラッグ */
- #define EVMOS_SCLC (0x0000_0100) /* シングルクリック */
- #define EVMOS_DCLC (0x0000_0200) /* ダブルクリック */
- #define EVKEY_ON (0x0001_0000) /* キーボード */
-
- typedef struct
- {
- int bufSiz;
- int bufLen;
- int bufPos;
- int readPos;
- EVQUE_T *quePtr;
- EVQUE_T *queBuf;
-
- int pdSw, pdX, pdY;
- } SIEV_T;
-
- extern SIEV_T *SiEv;
-
- /*----------------------------------------------------------------------*/
- #define EV_ERROR (-1)
- #define EV_NOTHING (-2)
- #define EV_BREAK (-3)
- #define EV_NEXT (-4)
- #define EV_EXIT (-5)
-
- /*----------------------------------------------------------------------*/
- extern int EV_init(void);
- extern void EV_term(void);
- extern int EV_setQueBufSiz( SIEV_T *ev, int siz );
- extern EV_T *EV_workAlloc( EV_T *basEv, int evNum);
- extern void EV_workFree( EV_T *ev );
- extern int EV_datUnset( EV_T *ev, int evPos);
- extern int EV_sense( SIEV_T *ev );
- /*----------------------------------------------------------------------*/
- #define EVCHKATT_LOOP (0x0001_0000)
- extern int EV_chk( EV_T *evTop, unsigned int att );
- /*----------------------------------------------------------------------*/
- extern int EV_chkQue( EV_T *evTop, EVQUE_T *que );
- extern EVDAT_T *EV_chkQueEntry( EV_T *evTop, EVQUE_T *que );
- extern int EV_ungetQue( EVQUE_T *evQue );
- extern void EV_waitMosSwOff(void);
- extern int EV_hitKbMos(void);
- extern void EV_queClear(void);
- /*----------------------------------------------------------------------*/
- struct _evall_t
- {
- int (*entFunc)( EVDAT_T *, EVQUE_T *);
- int (*dspFunc)( EVDAT_T *, int );
- int (*chkFunc)( EVDAT_T * );
- };
- extern int EV_setDatAll( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evall_t *para );
-
- #define EV_SETALL(_ev,_evPos,_evNo,_ptr,_func,_win,_entFunc,_dspFunc,_chkFunc) \
- { struct _evall_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_ALL; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.entFunc = (int (*)(EVDAT_T *,int))(_entFunc); \
- _para.dspFunc = (int (*)(EVDAT_T *,int))(_dspFunc); \
- _para.chkFunc = (int (*)(EVDAT_T *,)) (_chkFunc); \
- EV_setDatAll((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _evfr_t
- {
- int sw;
- FRAME_T fr;
- };
- extern int EV_setDatFr( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evfr_t *para );
-
- #define EV_SETFR(_ev,_evPos,_evNo,_ptr,_func,_win,_sw,_x1,_y1,_x2,_y2) \
- { struct _evfr_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_FR; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.sw = (_sw); _para.fr.x1 = (_x1); \
- _para.fr.y1 = (_y1); _para.fr.x2 = (_x2); \
- _para.fr.y2 = (_y2); \
- EV_setDatFr((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _evbtn1_t
- {
- int sw;
- FRAME_T fr;
- int n;
- COLOR_T chil, csha;
- };
- extern int EV_setDatBtn1( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evbtn1_t *para );
-
- #define EV_SETBTN1(_ev,_evPos,_evNo,_ptr,_func,_win,_sw,\
- _x1,_y1,_x2,_y2,_n,_c1,_c2) \
- { struct _evbtn1_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_BTN1; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.sw = (_sw); \
- _para.fr.x1 = (_x1); _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); _para.fr.y2 = (_y2); \
- _para.n = (_n); \
- _para.chil = (_c1); _para.csha = (_c2); \
- EV_setDatBtn1((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _evbtn2_t
- {
- int md;
- POINT_T point;
- int sw;
- FRAME_T fr;
- int n;
- COLOR_T cbtn, chil, csha;
- };
- extern int EV_setDatBtn2( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evbtn2_t *para );
-
- #define EV_SETBTN2(_ev,_evPos,_evNo,_ptr,_func, \
- _win,_sw,_x1,_y1,_x2,_y2,_n,_c1,_c2,_c3) \
- { struct _evbtn2_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_BTN2; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.md = 0; _para.sw = (_sw); \
- _para.fr.x1 = (_x1); _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); _para.fr.y2 = (_y2); \
- _para.n = (_n); _para.cbtn = (_c1); \
- _para.chil = (_c2); _para.csha = (_c3); \
- EV_setDatBtn2((_ev),(_evPos),&evdat,&_para); \
- }
-
-
- /*----------------------------------------------------------------------*/
- struct _evboxf_t
- {
- int md;
- POINT_T point;
- int sw;
- FRAME_T fr;
- COLOR_T col; /* ベタ塗色 */
- void *blk; /* イメージ保存用 */
- };
- extern int EV_setDatBoxf( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evboxf_t *para );
-
- #define EV_SETBOXF(_ev,_evPos,_evNo,_ptr,_func, \
- _win,_sw,_x1,_y1,_x2,_y2,_col) \
- { struct _evboxf_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_BOXF; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.md = 0; _para.sw = (_sw); \
- _para.fr.x1 = (_x1); _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); _para.fr.y2 = (_y2); \
- _para.col = (_col); \
- EV_setDatBoxf((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _evswoly_t
- {
- unsigned int att;
- int sw;
- };
- extern int EV_setDatSwoly( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evswoly_t *para );
- extern int EV_chkSwOff(void);
-
- #define EV_SETSWOLY(_ev,_evPos,_evNo,_ptr,_func,_win,_att,_sw) \
- { struct _evswoly_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_SWOLY; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.att = (_att); _para.sw = (_sw); \
- EV_setDatSwoly((_ev),(_evPos),&evdat,&_para); \
- }
-
- #define EVSWOLY_ATT_WIN (0x80) /* ウィンドゥの重なりをチェックする */
- #define EVSWOLY_ATT_QUICK (0x01) /* ボタンが押されたからすぐに反応 */
-
- /*----------------------------------------------------------------------*/
- struct _evkeyon_t
- {
- UINT ch, ec;
- };
- extern int EV_setDatKeyon0( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evkeyon_t *para );
-
- #define EV_SETKON0(_ev,_evPos,_evNo,_ptr,_func,_win) \
- { struct _evkeyon_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_KON0; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.ch = 0xFFFF; _para.ec = 0; \
- EV_setDatKeyon0((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- extern int EV_setDatKeyon1( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evkeyon_t *para );
-
- #define EV_SETKON1(_ev,_evPos,_evNo,_ptr,_func,_win,_ch,_ec) \
- { struct _evkeyon_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_KON1; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.ch = (_ch); _para.ec = (_ec); \
- EV_setDatKeyon1((_ev),(_evPos),&evdat,&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- extern int EV_setDatKeyon2( EV_T *ev, int evPos, EVDAT_T *evdat, struct _evkeyon_t *para );
-
- #define EV_SETKON2(_ev,_evPos,_evNo,_ptr,_func,_win,_ch,_ec) \
- { struct _evkeyon_t _para; \
- EVDAT_T evdat; \
- evdat.att = 0; evdat.typ = EVTYP_KON2; \
- evdat.para = NULL; \
- evdat.evFunc = (int (*)(int,EVDAT_T *))(_func); \
- evdat.evNo = (_evNo); evdat.ptr = (_ptr); \
- evdat.win = (_win); \
- _para.ch = (_ch); _para.ec = (_ec); \
- EV_setDatKeyon2((_ev),(_evPos),&evdat,&_para); \
- }
- /*----------------------------------------------------------------------*/
-
- #endif
-